﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Common;
using BusinessLayer;
using BoletoElectronicoDesktop.AbmBeneficiarios;

namespace BoletoElectronicoDesktop.EfectuarCompra
{

public partial class frmEfectuarCompra : FormAddModify
{

    public frmEfectuarCompra(Util.Funcionalidad Use): base(Use)
    {
        InitializeComponent();
    }
    public frmEfectuarCompra(int Id, Util.Funcionalidad Use)
        : base(Id, Use)
    {
        InitializeComponent();
    }
    public dsBoleto.BeneficiarioRow Beneficiario;
        public void setBeneficiario()
        {
            txtBeneficiario.Text = Beneficiario.RazonSocial;
            CargarPostNet();
        }
        public void CargarPostNet()
        {
            if (Beneficiario != null)
            {
                cbPostNet.DataSource = BizPostnet.getPostNetByBeneficiario(Beneficiario.IdBeneficiario);
                cbPostNet.DisplayMember = "Descripcion";
                cbPostNet.ValueMember = "IdPostnet";

                cbPostNet.SelectedItem = null;
                cbPostNet.Enabled = true;
            }
        }
      
        private void btSeleccionarBeneficiario_Click(object sender, EventArgs e)
        {
            BuscadorBeneficiario frm;
            if (this.MdiParent.MdiChildren.Any(f => f is BuscadorBeneficiario))
            {
                frm = (BuscadorBeneficiario)this.MdiParent.MdiChildren.First(f => f is BuscadorBeneficiario);
            }
            else
            {
                frm = new BuscadorBeneficiario(Util.Funcionalidad.BeneficiarioConsulta);
                frm.MdiParent = this.MdiParent;
            }

            frm.Show();
        }

    

        private void btAceptar_Click(object sender, EventArgs e)
        {
            try
            {
                if (ValidarDatos())
                {
                    dsBoleto.CompraDataTable dtCompra = new dsBoleto.CompraDataTable();
                    dsBoleto.CompraRow drCompra = dtCompra.NewCompraRow();
                    drCompra.IdBeneficiario = Beneficiario.IdBeneficiario;
                    drCompra.IdPostNet = int.Parse(cbPostNet.SelectedValue.ToString());

                    drCompra.Monto = decimal.Parse(txtMonto.Text);

                    decimal credito = BizCompra.Comprar(drCompra, int.Parse(txtTarjeta.Text));
                    if (credito == -1)
                        MessageBox.Show("La tarjeta no tiene suficiente credito para realizar la compra");
                    else
                    {
                        MessageBox.Show("Se ha realizado la venta.  La tarjeta tiene " + credito.ToString() + " de credito.");
                        Close();
                    }


                    
                }
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private bool ValidarDatos()
        {
            bool validado = true;
            string errores = "";

            if (string.IsNullOrEmpty(txtBeneficiario.Text))
            {
                validado = false;
                errores += "Se debe seleccionar un Beneficiario. \n";
            }
            else if (cbPostNet.SelectedItem == null)
            {
                validado = false;
                errores += "Se debe seleccionar un Posnet. \n";
            }

            if (string.IsNullOrEmpty(txtTarjeta.Text))
            {
                validado = false;
                errores += "Se debe completar el número de tarjeta. \n";
            }
            else
            {

                int numeroTarjeta;
                if (!int.TryParse(txtTarjeta.Text, out numeroTarjeta))
                {
                    validado = false;
                    errores += "El número de tarjeta debe ser númerico. \n";
                }
                else
                {
                    if (numeroTarjeta <= 0)
                    {
                        validado = false;
                        errores += "El número de tarjeta debe ser positivo. \n";
                    }
                }
            }
            if (string.IsNullOrEmpty(txtMonto.Text))
            {
                validado = false;
                errores += "Se debe completar el monto. \n";
            }
            else
            {

                decimal monto;
                if (!decimal.TryParse(txtMonto.Text, out monto))
                {
                    validado = false;
                    errores += "El monto debe ser númerico. \n";
                }
                else
                {
                    if (monto <= 0)
                    {
                        validado = false;
                        errores += "El monto debe ser positivo. \n";
                    }
                }
            }
           
            if (!validado)
            {
                MessageBox.Show(errores);
            }
            return validado;
        }
        private void btCancelar_Click(object sender, EventArgs e)
        {
            Close();
        }
    }
}
